package com.ck.dao;

import com.ck.exception.ServiceException;
import com.ck.model.common.Picture;
import com.ck.model.company.dto.CpPictureListDTO;
import com.ck.model.company.vo.CpProgramPictureListVO;
import com.github.pagehelper.Page;
import org.apache.ibatis.annotations.Param;

public interface PictureMapper {
	/**
	 * 保存图片
	 *
	 * @param picture Picture
	 */
	void insertPicture(Picture picture);

	/**
	 * 修改图片
	 *
	 * @param picture Picture
	 */
	void updatePictureById(Picture picture);

	/**
	 * 图片列表
	 *
	 * @param companyCode 商家编码
	 * @param pictureName 图片名称
	 * @return Page<CpPictureListVO>
	 */
	Page<CpPictureListDTO> listPicture(@Param("companyCode") String companyCode, @Param("pictureName") String pictureName);

	/**
	 * 通过ID获取图片
	 *
	 * @param pictureId 图片ID
	 * @return Picture
	 */
	Picture getPictureById(Long pictureId);

	/**
	 * 通过视频ID删除图片
	 *
	 * @param pictureId 图片ID
	 */
	void deletePictureById(Long pictureId);


	/**
	 * 通过图片组ID获取图片数量
	 *
	 * @param pictureGroupId 图片组ID
	 * @param companyCode    商家编码
	 * @return Long(图片数量)
	 */
	Long countPictureByPictureGroupId(@Param("pictureGroupId") Long pictureGroupId, @Param("companyCode") String companyCode);

    /**
     * 节目选择图片列表
     *
     * @param companyCode    公司代码
     * @param pictureGroupId 图片组ID
     * @return
     */
    Page<CpProgramPictureListVO> listProgramPicture(@Param("companyCode") String companyCode,
													@Param("pictureGroupId") Long pictureGroupId);

	/**
	 * 通过图片名称获取图片
	 *
	 * @param companyCode 商家编码
	 * @param pictureName 图片名称
	 * @return Picture
	 */
	Picture getPictureByName(@Param("companyCode") String companyCode, @Param("pictureName") String pictureName);


	/**
	 * 获取图片名称类似的条数
	 *
	 * @param companyCode 商家编码
	 * @param pictureName 图片名称
	 * @return Long(图片条数)
	 * @throws ServiceException
	 */
	Long countPictureByName(@Param("companyCode") String companyCode, @Param("pictureName") String pictureName);

	/**
	 * 更新图片分组ID
	 *
	 * @param pictureGroupId 图片分组ID
	 * @param pictureId      图片ID
	 */
	 void updatePictureGroupId(@Param("pictureGroupId") Long pictureGroupId, @Param("pictureId") Long pictureId);

    /**
     * 图片列表
     *
     * @param companyCode    商家编码
     * @param pictureName    图片名称
     * @param pictureGroupId 图片组ID
     * @return Page<CpPictureListDTO>
     */
    Page<CpPictureListDTO> list(@Param("companyCode") String companyCode,
                                @Param("pictureName") String pictureName,
                                @Param("pictureGroupId") Long pictureGroupId);

    long countPictureByCompany(@Param("companyCode") String companyCode, @Param("hasGroup") boolean hasGroup);
}